"""
类型
    list: 允许元素重复、有序有下标 []
    tuple: 允许重复，里面的元素不能增加删除修改、只能查看 （）
    dict: 键值对出现，键是唯一的，值允许重复{}
    set: 不允许重复，无序 {}
类型转换：
    tuple ---> list
    list ---> tuple,set(长度可能变化)
    set ---> tuple,list

    dict ---> list、set、tuple 可以转换、但是只是将字典的键放到[],{},()

    list---> dict:
        可以转换，单格式要求必须是：lst = [("name", "张三"), ("age", 18)]；lst = [["name", "张三"], ["age", 18]]
"""

'''
练习：
    图书管理系统
    library  ：
        字典存取：library = {"书名": name, "价格": price, "作者": author，"库存":in_stock}
    功能：
        1. 借书
        2. 还书
        3. 查询
        4. 查询所有
        5. 退出    
'''
library = [
    {"name": "西游记", "price": 100, "author": '吴承恩', "in_stock": 3},
    {"name": "红楼梦", "price": 300, "author": '曹雪芹', "in_stock": 2},
    {"name": "三国演义", "price": 200, "author": '罗贯中', "in_stock": 2},
    {"name": "水浒传", "price": 80, "author": '施耐庵', "in_stock": 1}
]

while True:
    print('''
        欢迎进入图书管理系统
            1. 借书
            2. 还书
            3. 查询
            4. 查询所有
            5. 退出 
    ''')
    choose = input("请选择进入：")
    if choose == '1':
        while True:
            print("欢迎进入借书管理".center(10, '*'))
            book_name = input("请输入借阅的书籍名称：")
            bk = {}
            for book in library:
                if book.get('name') == book_name:
                    bk = book
                    stock_num = book.get("in_stock")
                    if stock_num > 0:
                        while True:
                            print("书籍详情：", book)
                            is_borrow = input("是否借阅(1：是，2：否):")
                            if is_borrow == '2':
                                print("退出借阅")
                                break
                            elif is_borrow == '1':
                                borrow_num = int(input("请输入借阅数量:"))
                                stock_num = book.get("in_stock")
                                if stock_num >= borrow_num > 0:
                                    book['in_stock'] = stock_num - borrow_num
                                    flg = input("是否退出（Q/q）")
                                    if flg.lower() == 'q':
                                        break
                                elif stock_num < borrow_num:
                                    print("借阅数量超过库存，请重新选择！")
                            else:
                                print("输入有误请检查！")
                    else:
                        print("该藏书已被全部借阅，请重新选择或者改天再来！")
            if len(bk) == 0:
                print("图书馆没有该藏书，请重新输入！")
            flg = input("是否退出借阅（Q/q）")
            if flg.lower() == 'q':
                break
    elif choose == '2':
        while True:
            print("欢迎进入还书管理".center(10, '*'))
            book_name = input("请输入要还的书籍名称：")
            bk = {}
            for book in library:
                if book.get('name') == book_name:
                    bk = book
                    stock_num = book.get("in_stock")
                    print("书籍详情：", book)
                    while True:
                        is_return = input("是否还书(1：是，2：否)：")
                        if is_return == '2':
                            print("退出还书")
                            break
                        elif is_return == '1':
                            return_num = int(input("请输入归还数量："))
                            if return_num > 0:
                                book['in_stock'] = stock_num + return_num
                                print("当前书籍库存情况：", book)
                                flg = input("是否退出（Q/q）")
                                if flg.lower() == 'q':
                                    break
                            else:
                                print("输入有误请检查！")
                        else:
                            print("输入有误请检查！")
            if len(bk) == 0:
                print("图书馆没有该藏书，请检查输入！")
            flg = input("是否退出归还（Q/q）")
            if flg.lower() == 'q':
                break
    elif choose == '3':
        while True:
            print("欢迎进入查询管理".center(10, '*'))
            book_name = input("请输入要查询书籍名称：")
            bk = {}
            for book in library:
                if book.get('name') == book_name:
                    bk = book
                    print("书籍详情：", book)
            if len(bk) == 0:
                print("图书馆没有该藏书，请重新输入！")
            flg = input("是否退出查询（Q/q）")
            if flg.lower() == 'q':
                break
    elif choose == '4':
        while True:
            print("欢迎进入查询所有管理".center(10, '*'))
            print("{}{}{}{}".format("书名".center(10), "价格".center(10), "作者".center(10), "库存".center(10)))
            for book in library:
                print("{}{}{}{}".format(book.get('name').center(10), str(book.get('price')).center(10),
                                        book.get('author').center(10), str(book.get('in_stock')).center(10)))
            flg = input("是否退出查询所有（Q/q）")
            if flg.lower() == 'q':
                break
    elif choose == '5':
        flag = input("是否退出图书管理系统(q/Q)：")
        if flag.lower() == 'q':
            break
    else:
        print("输入有误请重新输入！")
